package com.divemotor.ventarepuestosinternet.service;

import java.util.List;

import org.primefaces.model.SortOrder;

import com.divemotor.ventarepuestosinternet.beans.adapter.RepuestoAdapter;
import com.divemotor.ventarepuestosinternet.beans.form.RepuestoForm;
import com.divemotor.ventarepuestosinternet.exception.DivemotorBusinessException;
import com.divemotor.ventarepuestosinternet.model.Imagen;
import com.divemotor.ventarepuestosinternet.model.Promocion;
import com.divemotor.ventarepuestosinternet.model.Repuesto;

 public interface RepuestoService {
	 
	 List<Repuesto> listarRepuestos() throws DivemotorBusinessException;
	 List<Repuesto> buscarRepuestos(RepuestoForm repuesto) throws DivemotorBusinessException;
	 List<RepuestoAdapter> buscarRepuestos(int inicio, int numeroResultadosPorPagina, 
			 						SortOrder orden, String columnaOrden, RepuestoForm repuesto) throws DivemotorBusinessException;
	 void insertarRepuesto(Repuesto repuesto) throws DivemotorBusinessException;
	 void actualizarRepuesto(Repuesto repuesto) throws DivemotorBusinessException;
	 void eliminarRepuesto(Repuesto repuesto) throws DivemotorBusinessException;
	 List<Repuesto> buscarRepuestosAsignablesPorImagen(RepuestoForm repuesto, Imagen imagen) throws DivemotorBusinessException;
	 List<Repuesto> buscarRepuestosAsignablesPorImagen(int inicio, int numeroResultadosPorPagina,
			 											SortOrder orden, String columnaOrden, Repuesto repuesto, Imagen imagen) throws DivemotorBusinessException;
	 List<Repuesto> buscarRepuestosAsignablesPorPromocion(int inicio, int numeroResultadosPorPagina,
			 											  SortOrder orden, String columnaOrden, Repuesto repuesto, Promocion promocion) throws DivemotorBusinessException;
	 Integer obtenerNumeroRepuestosBusqueda(RepuestoForm repuesto) throws DivemotorBusinessException;
	 Integer obtenerNumeroRepuestosAsignablesPorImagen(Repuesto repuesto, Imagen imagen) throws DivemotorBusinessException;
	 Integer obtenerNumeroRepuestosAsignablesPorPromocion(Repuesto repuesto, Promocion promocion) throws DivemotorBusinessException;
	 Repuesto obtenerRepuestoPorId(Integer idRepuesto) throws DivemotorBusinessException;
	 
}